def DataUid():
    return { 'uid': {
        'type': int,
        'required': True,
        'regex': r'^\d+$',
        'help': 'uid 必须是非负整数'
    }}

def DataPid():
    return { 'pid': {
        'type': int,
        'required': True,
        'regex': r'^\d+$',
        'help': 'pid 必须是非负整数'
    }}

def DataCid():
    return { 'cid': {
        'type': int,
        'required': True,
        'regex': r'^\d+$',
        'help': 'cid 必须是非负整数'
    }}

def DataContent():
    return {
        'content': {
            'type': str,
            'required': True,
            'regex': r'^.{5,}$',
            'help': '内容不能为空且至少需要5个字符'
        }
    }

def DataUsernamePassword():
    return {
        'username': {
            'required': True,
            'type': str,
            'regex': r'^[a-zA-Z0-9]{8,20}$',
            'help': '用户名格式不正确，需为8-20位字母、数字'
        },
        'password': {
            'required': True,
            'type': str,
            'regex': r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&]).{8,}$',
            'help': '密码需至少8位，包含大小写字母、数字和特殊字符'
        }
    }

def DataPaginatePosts():
    return {
        'limit': {
            'required': True,
            'type': int,
            'regex': r'^\d+$',
            'help': 'limit 必须是非负整数'
        },
        'offset': {
            'type': int,
            'regex': r'^\d+$',
            'help': 'offset 必须是非负整数'
        },
        'asc':{
            'required': True,
            'type': bool,
        }
    }

def DataMyPosts():
    return {
        'checked':{
            'required': True,
            'type': bool,
        },
        'passed':{
            'required': True,
            'type': bool,
        }
    }

def DataDatetime():
    return {
        'start': {
            'type': str,
            'regex': r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$',
            'help': '开始时间必须为 YYYY-MM-DD HH:MM:SS 格式'
        },
        'end': {
            'type': str,
            'regex': r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$',
            'help': '结束时间必须为 YYYY-MM-DD HH:MM:SS 格式',
        }
    }

def DataText():
    return {
        'text': {
            'required': True,
            'type': str,
            'regex': r'^.+$',
            'help': 'text不能为空'
        }
    }

def DataImage():
    return {
        'image': {
            'required': True,
            'type': str,
            'regex': r'^.+$',
            'help':'img不能为空'
        }
    }

def DataDisableUntil():
    return {
        'until': {
            'type': str,
            'required': True,
            'regex': r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$',
            'help': '封禁结束时间必须为 YYYY-MM-DD HH:MM:SS 格式'
        },
    }

def DataPublish():
    return {
        'pid':{
            'type': int,
            'regex': r'^\d+$',
            'help': 'pid 必须是非负整数'
        },
        'title':{
            'required': True,
            'type': str,
            'regex': r'^.+$',
            'help': '标题不能为空'
        },
        'sort':{
            'required': True,
            'type': str,
            'regex': r'^.+$',
            'help': '类别不能为空'
        },
        'content':{
            'required': True,
            'type': str,
            'regex': r'^.+$',
            'help': '内容不能为空'
        }
    }